The Internet permits users access to a wealth of information and services. A user need only have a computer that is connected to the Internet in order to access much of that information and services. Accordingly, there are a variety of applications that may run on a computer that would be interested in verifying whether or not the computer is actually connected to the Internet. One application might, for example, manage Internet connections through multiple Internet Service Providers (ISPs). There are several conventional mechanisms for verifying Internet connectivity.
One conventional mechanism is referred to here as “ISP gateway testing”. This mechanism makes a connection attempt to the ISP gateway, which might be a dedicated server machine, or perhaps a dedicated appliance. If, during a predefined period, there is no reply from the ISP gateway, the mechanism concludes that there is no Internet connectivity. If, on the other hand, there is a reply from the ISP gateway, the mechanism concludes that there is Internet connectivity. However, being connected to an ISP gateway does not necessarily imply Internet connectivity. Accordingly, this mechanism may result in false positive determinations of Internet connectivity.
Another conventional mechanism involves testing connections with other remote sites. In this approach, network traffic is dispatched to a configurable remote site such as, perhaps a Web site. The conclusion about Internet connectivity is made based on success or failure of a connection attempt to that remote Web site. This mechanism depends on the availability of the configured remote site. If the site is not operational or is simply too overloaded to reply, or if the connection request is blocked by an intermediary (such as a firewall or proxy server), this does not mean there is an absence of Internet connectivity. Accordingly, this approach can result in some false negative determinations regarding Internet connectivity. Furthermore, this approach requires configuration of the remote site, which might not be easy for a beginning user.
Another conventional approach uses passive testing. This approach is based on analyzing traffic that passes through a network card connected to a specific ISP. If traffic comes from Internet sources, this implies Internet connectivity through this link. However, if there is no traffic coming from Internet sources, or if all of the traffic is local, no conclusion can be drawn regarding Internet connectivity.